package ics;

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @author 23931
 */
public class DateParentNode extends Node {
    public static DateTimeFormatter defaultdateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss");
    private ZonedDateTime zonedDateTime;
    private ZoneId zoneId = ZoneId.of("Asia/Chongqing");

    /**
     * 默认为重庆时区的当前时间。
     */
    public DateParentNode() {
        setZonedDateTime(ZonedDateTime.now(getZoneId()));
        setValue(getZonedDateTime().format(defaultdateTimeFormatter));
    }

    /**
     * 指定时区的当前时间
     *
     * @param zoneId
     */
    public DateParentNode(ZoneId zoneId) {
        this();
        setZoneId(zoneId);
    }

    /**
     * 指定时间戳（重庆时区）。
     *
     * @param instant
     */
    public DateParentNode(Instant instant) {
        setZonedDateTime(ZonedDateTime.ofInstant(instant, getZoneId()));
        setValue(getZonedDateTime().format(defaultdateTimeFormatter));
    }

    /**
     * 指定时间戳和时区
     *
     * @param instant
     * @param zoneId
     */
    public DateParentNode(Instant instant, ZoneId zoneId) {
        setZoneId(zoneId);
        setZonedDateTime(ZonedDateTime.ofInstant(instant, getZoneId()));
        setZonedDateTime(getZonedDateTime());
        setValue(getZonedDateTime().format(defaultdateTimeFormatter));
    }

    public ZonedDateTime getZonedDateTime() {
        return zonedDateTime;
    }

    public void setZonedDateTime(ZonedDateTime zonedDateTime) {
        this.zonedDateTime = zonedDateTime;
    }

    public ZoneId getZoneId() {
        return zoneId;
    }

    public void setZoneId(ZoneId zoneId) {
        this.zoneId = zoneId;
    }

}
